/**
 * 测试期数时间计算逻辑
 */

function testTimeCalculation() {
    console.log('🧪 测试期数时间计算逻辑...\n');

    // 模拟当前时间
    const now = new Date();
    console.log(`当前时间: ${now.toISOString()}`);
    console.log(`当前本地时间: ${now.toLocaleString()}\n`);

    // 测试1: 正常情况 - 上一期刚结束
    console.log('📊 测试1: 正常情况 - 上一期刚结束');
    const lastRoundEndTime = new Date(now.getTime() - 1000); // 1秒前结束
    const startTime1 = new Date(lastRoundEndTime.getTime() + 1);
    const endTime1 = new Date(startTime1.getTime() + 10 * 60 * 1000);

    console.log(`上一期结束时间: ${lastRoundEndTime.toISOString()}`);
    console.log(`新期数开始时间: ${startTime1.toISOString()}`);
    console.log(`新期数结束时间: ${endTime1.toISOString()}`);
    console.log(`期数时长: ${(endTime1.getTime() - startTime1.getTime()) / 1000 / 60}分钟`);
    console.log(`剩余时间: ${(endTime1.getTime() - now.getTime()) / 1000}秒\n`);

    // 测试2: 异常情况 - 上一期结束时间异常（未来时间）
    console.log('📊 测试2: 异常情况 - 上一期结束时间异常（未来时间）');
    const abnormalEndTime = new Date(now.getTime() + 2 * 60 * 60 * 1000); // 2小时后
    const timeDiff = now.getTime() - abnormalEndTime.getTime();

    console.log(`异常结束时间: ${abnormalEndTime.toISOString()}`);
    console.log(`时间差: ${timeDiff / 1000 / 60}分钟`);

    if (timeDiff > 60 * 60 * 1000 || timeDiff < -60 * 60 * 1000) {
        console.log('⚠️ 上一期结束时间异常，使用当前时间创建新期数');
        const startTime2 = now;
        const endTime2 = new Date(startTime2.getTime() + 10 * 60 * 1000);

        console.log(`修正后开始时间: ${startTime2.toISOString()}`);
        console.log(`修正后结束时间: ${endTime2.toISOString()}`);
        console.log(`修正后期数时长: ${(endTime2.getTime() - startTime2.getTime()) / 1000 / 60}分钟`);
        console.log(`修正后剩余时间: ${(endTime2.getTime() - now.getTime()) / 1000}秒\n`);
    }

    // 测试3: 异常情况 - 上一期结束时间异常（过去很久）
    console.log('📊 测试3: 异常情况 - 上一期结束时间异常（过去很久）');
    const oldEndTime = new Date(now.getTime() - 3 * 60 * 60 * 1000); // 3小时前
    const timeDiff2 = now.getTime() - oldEndTime.getTime();

    console.log(`很久前的结束时间: ${oldEndTime.toISOString()}`);
    console.log(`时间差: ${timeDiff2 / 1000 / 60}分钟`);

    if (timeDiff2 > 60 * 60 * 1000 || timeDiff2 < -60 * 60 * 1000) {
        console.log('⚠️ 上一期结束时间异常，使用当前时间创建新期数');
        const startTime3 = now;
        const endTime3 = new Date(startTime3.getTime() + 10 * 60 * 1000);

        console.log(`修正后开始时间: ${startTime3.toISOString()}`);
        console.log(`修正后结束时间: ${endTime3.toISOString()}`);
        console.log(`修正后期数时长: ${(endTime3.getTime() - startTime3.getTime()) / 1000 / 60}分钟`);
        console.log(`修正后剩余时间: ${(endTime3.getTime() - now.getTime()) / 1000}秒\n`);
    }

    // 测试4: 验证修复后的逻辑
    console.log('📊 测试4: 验证修复后的逻辑');
    console.log('修复后的逻辑会：');
    console.log('1. 检查上一期结束时间是否合理（±1小时内）');
    console.log('2. 如果异常，使用当前时间创建新期数');
    console.log('3. 确保期数时长固定为10分钟');
    console.log('4. 添加详细的时间验证日志');

    console.log('\n✅ 测试完成！');
}

// 运行测试
testTimeCalculation();
